package org.pps.gl.client.vue;

import org.pps.gl.client.LoginInfo;

import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
 * Classe représentant la page du réseau d'un utilisateur.
 * 
 */
public class Reseau extends Composite implements ValueChangeHandler<String> {
	DockLayoutPanel dockPanel;
	RSX_Relations vrelations;
	RSX_Statistiques vstatistiques;
	ScrollPanel flux;

	public Reseau() {

		dockPanel = new DockLayoutPanel(Unit.PX);

		initWidget(dockPanel);
		dockPanel.setSize("100%", "100%");
		VerticalPanel menu = new VerticalPanel();

		menu.setSize("100%", "");
		menu.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP);
		Integer nCont = LoginInfo.getCurrentUser().getUserInfo().getContacts().size();
		Hyperlink relations = new Hyperlink("Mes "+nCont+" relations", "relations");
		relations.setStylePrimaryName("menuHyper");
		Hyperlink statistiques = new Hyperlink("Statistiques", "statistiques");
		statistiques.setStylePrimaryName("menuHyper");

		menu.add(relations);
		menu.add(statistiques);

		SimplePanel p = new SimplePanel();
		p.add(menu);
		p.setStylePrimaryName("navigation");
		flux = new ScrollPanel();

		vrelations = new RSX_Relations();
		vstatistiques = new RSX_Statistiques();
		flux.setSize("98%", "100%");
		flux.add(vrelations);
		History.addValueChangeHandler(this);
		dockPanel.addWest(p, 146);
		dockPanel.add(flux);
		dockPanel.setSize("100%", "100%");
	}

	@Override
	public void onValueChange(ValueChangeEvent<String> event) {
		String[] tab = event.getValue().split("/");

		if (event.getValue().equals("relations")
				|| (tab.length > 1 && tab[0] != null && tab[0].equals("user"))) {
			flux.clear();
			flux.add(vrelations);
		}
		if (event.getValue().equals("statistiques")) {
			flux.clear();
			flux.add(vstatistiques);
		}

	}

}
